1. 简介

什么是 OpenCV?

OpenCV(Open Source Computer Vision Library)是一个开源的跨平台计算机视觉库,它实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域最有力的研究工具。

在这里我们要区分两个概念:图像处理和计算机视觉的区别。图像处理侧重于「处理」图像——如增强,还原,去噪,分割等等。而计算机视觉重点在于使用计算机来「模拟」人的视觉,因此模拟才是计算机视觉领域的最终目标。
  
OpenCVC++语言编写,它具有C++PythonJava, JuliaMATLAB 接口,并支持WindowsLinuxAndroidmacOS

OpenCV 为什么能够处理图片?

我们知道,摄像机得到的图像是连续的(即模拟信号)。运行在计算机伤的OpenCV又该如何读取和处理这些文件呢,它只认识0101啊(即二进制信号)

那么,答案就是——图像的数字化(是的,就是ADC!)

一般的图像(模拟图像)不能直接用计算机来处理,必须先将图像转化为数字图像。把模拟图像分割成一个个像素,每个像素的亮度或灰度值用一个整数表示

Pasted image 20231219101215.png

现实中的图像,有黑白的也有彩色的。我们需要分别设计一套方法,来让计算机能够处理我们的图片。

灰度图像数字化

灰度图像的数字化,就是将整个图像转化成一个二维数组,而每个坐标存的就是相关的灰度值(0-255)

为什么是0-255?一个字节存放8bit,而图的储存一般都是以uint8类型存放,同时计算机时按照二进制存放数值,也就是2的8次方,也就是256)

Pasted image 20231219102112.png

比如:

Pasted image 20231219102252.png

彩色图像数字化

彩色像数字化原理同灰度图像数字化,只不过彩色图像为三通道图像且可以拆分成三张同等像素的灰度图,由下图可知,每三个BGR就组成了一张图片的一列。

一般来说,在OpenCV当中,RGB的值是分别储存在三个二维数组当中。

Pasted image 20231219102547.png

经过数字化处理的图像,就可以正常的在OpenCV当中被处理啦~

习题

讨论题

  1. 查阅资料,OpenCV主要有哪些模块,分别可以执行什么功能呢?
  2. 什么是二值化图像,它与上文提到的灰度图像有什么区别吗?
  3. 我们常常提到一个概念——位深度。位深度在数字图像中究竟代表了什么呢?

参考文献

  1. Python - OpenCV简介